node.jsのいろいろなモジュール39 – evilscanでポートスキャンを行う
ポートスキャンをするモジュール
evilscanは、任意のip/ポートに対してスキャンを行うツールです。 Javascriptから使用することもできますし、グローバルインストールしてコマンドから使用することもできます。 範囲を指定してip/ポートをスキャンすることもでき、結果をJSONで出力したりもできます。
環境構築方法
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.5
- Node.js : v0.10.8
- npm : 1.2.23
npmを使用してモジュールをグローバルインストールしましょう。
% npm install -g evilscan
evilscanを試す
evilscanモジュールをrequireしてプログラムから使用することもできますが、今回はコマンドラインから使用してみましょう。 evilscanコマンドに続いて、ポートスキャンするip/ドメイン、チェックするポートを指定します。 下記コマンドでは、samplescan.comの0番から1000番のポートに対してスキャンを実行しています。
%evilscan samplescan.com --port=0-1000 xxx.xxx.xxx.xxx|80||open xxx.xxx.xxx.xxx|22|SSH-2.0-OpenSSH_6.1\r\n|open
80番と22番ポートが開いているのがわかりますね。ポートは,区切りで複数指定したり、-で範囲指定が可能です。 また、evilscanのオプションで、結果をxmlやjsonで出力したりタイムアウトを設定したりできます。
evilscan実行時にエラーが出た場合
evilscan実行時に下記のようなエラーがでることがあります。
・ ・ (libuv) Failed to create kqueue (24) events.js:72 throw er; // Unhandled 'error' event ^ Error: write EBADF ・ ・
そのような場合、次のようにulimitで起動プロセス数の上限を上げてから再度実行してみてください。
% ulimit -n 1024
まとめ
まだ開発初期で、未実装の機能もたくさんありますが、ポートの開閉は簡単にチェックできるので、使用してみてください。